/**
 * 
 */
package controller.xml;

import java.io.File;
import java.io.IOException;
import java.util.Set;

import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;

import model.solver.ImportESolver;

import org.xml.sax.SAXException;

/**
 * Parse a set of {@link ImportESolver} in an exported XML file.
 * 
 * @author GRONOWSKI Stephane svan001@aol.com
 * 
 *         igsat 2010
 * 
 */
public class ParserSolverXML {

	public static final String		XML_FILE_NAME	= XMLBaliseFormat.XML_EXPORT_SOLVER_FILE_NAME;

	private File					directory;
	private ExportedESolverHandler	solverHandler	= null;


	public ParserSolverXML(File directory) {
		this.directory = directory;
	}

	public Set<ImportESolver> run() {
		try
		{
			// création d'une fabrique de parseurs SAX
			SAXParserFactory fabrique = SAXParserFactory.newInstance();

			// création d'un parseur SAX
			SAXParser parseur = fabrique.newSAXParser();

			// lecture d'un fichier XML avec un DefaultHandler
			File fichier = new File(directory, XML_FILE_NAME);
			solverHandler = new ExportedESolverHandler();
			parseur.parse(fichier, solverHandler);

			return solverHandler.getSolvers();

		} catch (ParserConfigurationException pce)
		{
			pce.printStackTrace();
			System.out.println("Erreur de configuration du parseur");
			System.out.println("Lors de l'appel à newSAXParser()");
		} catch (SAXException se)
		{
			se.printStackTrace();
			System.out.println("Erreur de parsing");
			System.out.println("Lors de l'appel à parse()");
		} catch (IOException ioe)
		{
			ioe.printStackTrace();
			System.out.println("Erreur d'entrée/sortie");
			System.out.println("Lors de l'appel à parse()");
		}
		return null;
	}

}
